﻿using BonjourQuotation.ObjectModel.AccountData;
using BonjourQuotation.ObjectModel.BusinessData;
using BonjourQuotation.ObjectModel.ErrorData;
using BonjourQuotation.ObjectModel.CustomerData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BonjourQuotation.DataAccess.Repositories
{
    public interface ICustomerRepository : IDisposable
    {
        ErrorBInfo CreateCustomer(CustomerDetailsBData CustomerData);
        ManageCustomersGridBData LoadCustomers(int PageNumber);
        ManageCustomersGridBData LoadCustomerByID(int CustomerID);
        ManageCustomersGridBData LoadSearchedCustomers(ManageCustomersGridBData Data);
        CustomerDetailsBData LoadCustomerDetailsByID(int CustomerID);
        CustomerGroupsBData LoadCustomerGroupsByID(int CustomerID);
        CustomerQuotationsBData LoadCustomerQuotationsByID(int CustomerID);
        CustomerInvoicesBData LoadCustomerInvoicesByID(int CustomerID);
        CustomerPaymentsBData LoadCustomerPaymentsByID(int CustomerID);
        CustomerGroupsBData LoadCustomerSearchedGroupsByID(int CustomerID, int CustomerStatusID);
        ErrorBInfo SaveCustomerPaymentsData(CustomerPaymentsBData PaymentsData);
        ErrorBInfo CreateCustomerPayment(CustomerPaymentsBData CustomerPaymentsData, ref int LineNo);
        CustomerPaymentGroupsBData LoadCustomerPaymentGroupsByID(int CustomerID, int? LineNo);
        ErrorBInfo SaveCustomerPaymentGroupsData(CustomerPaymentGroupsBData PaymentGroupsData);
        ErrorBInfo SaveCustomersGridData(ManageCustomersGridBData Data);
        ErrorBInfo SaveCustomerDetailsData(CustomerDetailsBData Data);
        ErrorBInfo CreateCustomerContact(CustomerDetailsBData CustomerContactData);
        Dictionary<string, string> LoadState();
        Dictionary<int, string> LoadCity(int CountryID, string StateID);

    }
}
